package leetcode.easy.q09;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Question9 {
    public static void main(String[] args) {
        log.info("{}",new Solution().isPalindrome(121));
        log.info("{}",new Solution().isPalindrome(-121));
        log.info("{}",new Solution().isPalindrome(10));
        log.info("{}",new Solution().isPalindrome(-101));
    }
}

/**
 * 字符串解决方案
 */
class Solution {
    public boolean isPalindrome(int x) {
        String numStr = String.valueOf(x);
        int start = 0, end = numStr.length() - 1;
        while (start < end) {
            if (numStr.charAt(start) != numStr.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }
        return true;

    }
}
/**
 * 非字符串解决方案
 * 回文：负数不能为回文，正数回文等于自己， 参考
 * @see leetcode.easy.q07.Question7
 */
class Solution2 {
    public boolean isPalindrome(int x) {
        //负数没办法回文
        if (x<0) return false;
        return reverse(x)==x;
    }

    /**
     * reverse的实现参考q07
     * @param x
     * @return
     */
    public int reverse(int x) {
        long result = 0L;
        while (x != 0) {
            result = result * 10 + x % 10;//个位
            x = x / 10;//舍去个位
        }
        return (int) result == result ? (int) result : 0;
    }
}